// acetone, 2024
// I hate copyright of any kind. This is a public domain.
// Original source: https://notabug.org/acetone/shitflow

#pragma once

#include <inttypes.h>

namespace ShitFlow {

namespace MessageType {
constexpr uint8_t request     = 0x00;
constexpr uint8_t response    = 0x01;
constexpr uint8_t fatal_error = 0x02;
} // namespace MessageType

namespace RequestType {
constexpr uint8_t handshake                   = 0x00;
constexpr uint8_t get_point_declaration_list  = 0x01;
constexpr uint8_t get_chunk                   = 0x02;
constexpr uint8_t close_connection_on_success = 0x03;
} // namespace RequestType

namespace ResponseType {
constexpr uint8_t handshake                          = 0x00;
constexpr uint8_t point_does_not_exists              = 0x01;
constexpr uint8_t chunk_does_not_exists              = 0x02;
constexpr uint8_t message_validation_error_no_action = 0x03;
constexpr uint8_t point_declaration_list             = 0x04;
constexpr uint8_t chunk                              = 0x05;
} // namespace ResponseType

namespace StructureType {
constexpr uint8_t handshake         = 0x00;
constexpr uint8_t point_declaration = 0x01;
constexpr uint8_t chunk             = 0x02;
} // namespace StructureType

namespace FatalErrorType {
constexpr uint8_t reading_timeout = 0x00;
constexpr uint8_t other           = 0x01;
} // namespace FatalErrorType

namespace PointType {
constexpr uint8_t file = 0x00;
} // namespace PointType

class Message
{
public:
    Message();
};

} // namespace ShitFlow
